﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Graphics;

namespace ShevaEngine.Core.Modules.Graphics
{
    /// <summary>
    /// Interface graphics buffer.
    /// </summary>
    public interface IGraphicsBuffers
    {
        /// <summary>Vertex declaration.</summary>
        VertexDeclaration VertexDeclaration { get; }
        /// <summary>Vertex buffer.</summary>
        VertexBuffer VBO { get; }
        /// <summary>Vertex buffer.</summary>
        IndexBuffer IBO { get; }

        /// <summary>
        /// Method tests if we can add
        /// </summary>
        /// <param name="drawCall"></param>
        /// <param name="vertices"></param>
        /// <param name="indices"></param>
        Boolean CanAddData(DrawCall drawCall, VertexDeclaration vertexDeclaration, List<Int32> indices);

        /// <summary>
        /// Method adds
        /// </summary>
        /// <param name="drawCall"></param>
        /// <param name="vertices"></param>
        /// <param name="indices"></param>
        void AddData(DrawCall drawCall, List<IVertexType> vertices, List<Int32> indices);

        /// <summary>
        /// Method adds
        /// </summary>
        /// <param name="drawCall"></param>
        /// <param name="vertices"></param>
        /// <param name="indices"></param>
        void AddData(DrawCall drawCall, byte[] verticesData, List<Int32> indices);

        /// <summary>
        /// Method creates buffers.
        /// </summary>
        void CreateBuffers();


    }
}
